# coding:utf-8
'''
Created on 2011-3-31
第二阶段
将单词复数化的简单模块。复数化原则：
1.如果一个单词以S、X或Z结尾，加ES。
2.如果一个单词以发音的H结尾，加ES；若以不发音的H结尾，加S。
3.如果一个单词以发I音的Y几位，把Y变IES；如果Y与元音搭配在一起发出其他声音的则只加S。
4.如果一起规则都不适用，就只添加S。
@author: Administrator
'''
import re

def match_sxz(noun):
    return re.search('[sxz]$', noun)

def apply_sxz(noun):
    return re.sub('$', 'es', noun)

def match_h(noun):
    return re.search('[^aeioudgkprt]h$', noun)

def apply_h(noun):
    return re.sub('$', 'es', noun)

def match_y(noun):
    return re.search('[^aeiou]y$', noun)

def apply_y(noun):
    return re.sub('y$', 'ies', noun)

def match_default(noun):
    return 1

def apply_default(noun):
    return noun + 's'

rules = ((match_sxz, apply_sxz), (match_h, apply_h),
         (match_y, apply_y), (match_default, apply_default))

def plural(noun):
    for matchRule, applyRule in rules:
        if matchRule(noun):
            return applyRule(noun)
        
print plural('boy')
print plural('man')
print plural('factory')
